Large networks that service client requests often benefit from the use of load balancers. For instance, in a network that includes multiple back-end servers that process client requests, a front-end load balancer may attempt to evenly distribute incoming requests across the servers in order to prevent any one server from becoming overloaded. While load balancers generally improve the overall efficiency of large distributed networks with many servers, there are circumstances in which the shortcomings of certain load balancers may outweigh the performance gained from their load balancing features. For instance, certain systems require large transmission control protocol (“TCP”) window sizes, which can be very demanding on a load balancer that has fixed memory resources. In some cases, the load balancer may attempt to shrink window sizes to compensate for inadequate memory resources; however, this typically results in poor connection performance for clients as shrinking window sizes may cause a sharp increase in the ratio of overhead data to useful data for a given connection. Direct server return (DSR) is a technique that can overcome some limitations of load balancers in certain implementations. However, DSR's reliance on Media Access Control (MAC) addresses for packet delivery may be unacceptable for complex network topologies.
Additionally, load balancers typically perform decisions based on coarse characteristics of back-end servers. For instance, in some cases, load balancers may base decisions on information that specifies whether each back-end server is “up” or “down” (e.g., either operating or not operating, respectively). Furthermore, in systems with multiple load balancers, different groups of back-end servers are typically assigned to specific load balancers. To move a back-end server from the distribution domain of one load balancer to another typically requires terminating active connections on that back-end server as well as performing configuration changes on the relevant load balancers.
While the system and method for distributed load balancing with load balancer clients for hosts is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the system and method for distributed load balancing with load balancer clients for hosts is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the system and method for distributed load balancing with load balancer clients for hosts to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the system and method for distributed load balancing with load balancer clients for hosts as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.